package core

import (
	"flag"
	log2 "log"
	"path"

	"github.com/spf13/viper"
)

var (
	config string
)

func Setup() {
	flag.StringVar(&config, "c", "config/app.yaml", "配置文件")
	flag.Parse()

	base := path.Base(config)
	ext := path.Ext(config)
	configPath := config[0 : len(config)-len(base)]
	configName := base[0 : len(base)-len(ext)]

	viper.SetConfigName(configName)
	viper.AddConfigPath(configPath)
	viper.SetConfigType(ext[1:])
	err := viper.ReadInConfig()

	if err != nil {
		log2.Panicf("读取app.yaml发生异常：%v", err)
	}

	DATABASE.dc()
	REDIS.dc()
	MQTT.dc()

	LOG.setup()
	DATABASE.setup()
	DATABASE.migrate()
	REDIS.setup()
	Captcha.setup()
	MQTT.setup()
}

func Exit() {
	MQTT.exit()
	REDIS.exit()
}
